/**
 * 结构体定义规则:
 *  结构体定义由关键字 struct 和结构体名组成，结构体名可以根据需要自行定义。struct 语句定义了一个包含多个成员的新的数据类型
 *  结构体类型的变量创建
 *  当一个数据类型创建好了之后，我们就避免不了创建一个变量使用它，如何创建一个结构体类型的变量呢？
 */

#include "stdio.h"
#include "string.h"

//1. 定义结构体后直接创建变量
struct Student{
    char name[20];
    int age;
    char sex[5];
} stu; //直接在其尾部创建了一个变量

//2. 定义结构体后在创建变量

struct Stu{
    char name[20];
    int age;
    char sex[10];
};

struct Stu stu1; // 创建结构体，再创建变量
//以上创建的都是全局变量

/////////////////////////////////////////////////////
//结构体的初始化:  结构体的变量创建好了，那么也就避免不了对其进行初始化了，结构体的初始化大致分成三种初始化方式
////////////////////////////////////////////////////




/**
 * 主函数
 * @return
 */
int main40(){
    //定义结构体，创建局部变量
    //（1）定义时后直接进行初始化
    //定义好结构体后如果不直接进行初始化，那么在后续的给结构体中内容赋值时不能在一次性全部赋值了
    struct Stu student={"zhangsan",20,"男"};
    printf("name:%s,age:%d,sex:%s \n",student.name,student.age,student.sex);
    //(2)定义后逐个赋值
    struct Stu student1;
    strcpy(student1.name,"lisi");
    student1.age=56;
    strcpy(student1.sex,"女");
    printf("name:%s,age:%d,sex:%s \n",student1.name,student1.age,student1.sex);
    //(3)乱序初始化结构体
    struct Stu student2={.name="zhangsan",.sex="男",.age=11};
    printf("name:%s,age:%d,sex:%s \n",student2.name,student2.age,student2.sex);
    return 0;
}